package com.elcl.util.viewutils;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;

public class ImageViewUtils {

	/**
	 * 以最省内存的方式读取本地资源的图片 (防止图片OOM) 参考地址：http://www.tuicool.com/articles/yemM7zf
	 */
	public static Bitmap readBitMap(Context context, int resId) {
		BitmapFactory.Options opt = new BitmapFactory.Options();
		opt.inPreferredConfig = Bitmap.Config.RGB_565; // 可以节约一半内存
		opt.inPurgeable = true; // 让系统可以及时的回收内存
		opt.inInputShareable = true; // 是否深拷贝，和inPurgeable结合使用
		// 获取资源图片
		InputStream is = context.getResources().openRawResource(resId);
		return BitmapFactory.decodeStream(is, null, opt);
	}

	/**
	 * 以最省内存的方式读取本地资源的图片 (防止图片OOM) 参考地址：http://www.tuicool.com/articles/yemM7zf
	 */
	public static Bitmap readBitMap(Bitmap bitmap) {  
        BitmapFactory.Options opt = new BitmapFactory.Options();  
        opt.inPreferredConfig = Bitmap.Config.RGB_565; //可以节约一半内存
        opt.inPurgeable = true;  //让系统可以及时的回收内存
        opt.inInputShareable = true; //是否深拷贝，和inPurgeable结合使用
        InputStream is = Bitmap2IS(bitmap);
        return BitmapFactory.decodeStream(is, null, opt);  
    }

	private static InputStream Bitmap2IS(Bitmap bm) {
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		bm.compress(Bitmap.CompressFormat.JPEG, 100, baos);
		InputStream sbs = new ByteArrayInputStream(baos.toByteArray());
		return sbs;
	}
}
